/**
 * org.vz.product.data.collect.util
 * @since : jdk 1.8
 */
package org.vz.attach.standard.util;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import java.util.UUID;

import org.apache.commons.lang3.StringUtils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;

/**
 * @author      chenhuaijin
 * @CreateTime  2017年7月26日 下午4:25:30
 * @version     1.0.0
 * @description 先提供转换成json 字符串和json对象的，后再补充
 */
public class StringUtil {
	
	/**
	 * 
	 * @description  对象转换为json字符串
	 * @author       lanxuyu
	 * @CreateTime   2017年9月13日 下午3:26:00
	 * @param obj
	 * @return
	 */
	public static String toJsonString(Object obj){
		return JSON.toJSONString(obj,true);
	}
	/**
	 * 
	 * @description  对象转换为json字符串,禁用循环引用
	 * @author       lanxuyu
	 * @CreateTime   2017年9月13日 下午3:23:40
	 * @param obj	
	 * @return
	 */
	public static String cycleListToString(Object obj){
		return JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect);
	}
	/**
	 * 
	 * @description  对象转换为List
	 * @author       lanxuyu
	 * @CreateTime   2017年9月13日 下午3:24:17
	 * @param obj
	 * @param clz
	 * @return
	 */
	public static <T> List<T> toList(String obj,Class<T> clz){
		return JSON.parseArray( obj, clz);
	}
	/**
	 * 
	 * @description  json字符串转换为对象
	 * @author       lanxuyu
	 * @CreateTime   2017年9月13日 下午3:24:42
	 * @param str
	 * @return
	 */
	public static JSONObject parseJSONObject(String str){
		return JSON.parseObject(str);
	}
	/**
	 * 
	 * @description  字符串转换为日期yyyy-MM-dd HH:mm:ss
	 * @author       lanxuyu
	 * @CreateTime   2017年9月13日 下午3:22:21
	 * @param date	日期字符串
	 * @return		日期
	 */
	public static Date stringToDate(String dateString){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date d=null;
		try {
			d=sdf.parse(dateString);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return d;
	}
	public static String dateToString(Date date,String formatModel){
		SimpleDateFormat sdf = new SimpleDateFormat(formatModel);
		String dateString = sdf.format(date);
		return dateString;
	}
	/**
	 * 
	 * @description  截取最后个分隔符后面的内容，不包括分隔符
	 * @author       chenhuaijin
	 * @CreateTime   2017年7月28日 上午10:54:04
	 * @param str  要处理的字符串
	 * @param sepa 分隔符
	 * @return
	 */
	public static String substringAfterLast(String str,String sepa){
		String rlt = StringUtils.substringAfterLast(str,sepa);
		return rlt;
	}
	/**
	 * 
	 * @description  统一标准得到的uuid
	 * @author       chenhuaijin
	 * @CreateTime   2017年8月1日 上午11:39:08
	 * @return
	 */
	public static String uuid(){
		String uuid = UUID.randomUUID().toString();
		return uuid;
	}
	/**
	 * 
	 * @description  将list加个分隔符变成字符串
	 * @author       chenhuaijin
	 * @CreateTime   2017年9月5日 上午9:18:16
	 * @param list
	 * @param separator
	 * @return
	 */
	public static String listToString(List<?> list, String separator){
		String rlt = StringUtils.join(list.toArray(),separator);
		return rlt;
		
	}
	/**
	 * 
	 * @description  某个字符串是否包含另一个字符串
	 * @author       chenhuaijin
	 * @CreateTime   2017年9月5日 上午9:18:45
	 * @param str
	 * @param search
	 * @return
	 */
	public static boolean contains(String str,String search){
		return StringUtils.contains(str, search);
	}
	/**
	 * 
	 * @description 生成不重复的Long
	 * @author       chenhuaijin
	 * @CreateTime   2017年9月5日 上午9:19:08
	 * @return
	 */
	public static long randomNoDuplicate(){
		return System.currentTimeMillis()/1000 - 500;
	}

	/**
	 * 
	 * @description  将字符串数组变成List
	 * @author       chenhuaijin
	 * @CreateTime   2017年9月14日 上午11:45:47
	 * @param str
	 * @return
	 */
	public static List<String> arrayToList(String[] str){
		return Arrays.asList(str);
	}
	/**
	 * 
	 * @description  截取sep1,sep2间的字符串
	 * @author       chenhuaijin
	 * @CreateTime   2017年9月14日 下午2:34:45
	 * @param str
	 * @param tag
	 * @return
	 */
	public static String substringBetween(String str,String sep1,String sep2){
		return StringUtils.substringBetween(str,  sep1,sep2);
	}
}
